#!/bin/bash

# =============================================================================
# 系统环境安装脚本
# =============================================================================

set -e

# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'

log_info() { echo -e "${BLUE}[INFO]${NC} $1"; }
log_success() { echo -e "${GREEN}[SUCCESS]${NC} $1"; }
log_warning() { echo -e "${YELLOW}[WARNING]${NC} $1"; }
log_error() { echo -e "${RED}[ERROR]${NC} $1"; }

log_info "开始系统环境安装..."

# 更新系统
log_info "更新系统包..."
sudo apt update && sudo apt upgrade -y

# 安装基础工具
log_info "安装基础工具..."
sudo apt install -y \
    curl \
    wget \
    git \
    unzip \
    build-essential \
    software-properties-common \
    apt-transport-https \
    ca-certificates \
    gnupg \
    lsb-release

# 安装Node.js 20
log_info "安装Node.js 20..."
if ! command -v node &> /dev/null; then
    curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
    sudo apt-get install -y nodejs
    log_success "Node.js 安装完成: $(node --version)"
else
    CURRENT_VERSION=$(node --version | cut -d'v' -f2 | cut -d'.' -f1)
    if [ "$CURRENT_VERSION" -lt "20" ]; then
        log_info "当前Node.js版本过低，升级到Node.js 20..."
        curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
        sudo apt-get install -y nodejs
        log_success "Node.js 升级完成: $(node --version)"
    else
        log_info "Node.js 已安装: $(node --version)"
    fi
fi

# 验证npm
if ! command -v npm &> /dev/null; then
    log_error "npm 安装失败"
    exit 1
else
    log_success "npm 版本: $(npm --version)"
fi

# 安装全局包
log_info "安装全局npm包..."
sudo npm install -g pm2

# 验证PM2安装
if ! command -v pm2 &> /dev/null; then
    log_error "PM2 安装失败"
    exit 1
else
    log_success "PM2 安装完成: $(pm2 --version)"
fi

# 安装Nginx
log_info "安装Nginx..."
if ! command -v nginx &> /dev/null; then
    sudo apt install -y nginx
    sudo systemctl enable nginx
    log_success "Nginx 安装完成"
else
    log_info "Nginx 已安装"
fi

# 配置防火墙
log_info "配置防火墙..."
sudo ufw --force enable
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw allow 'Nginx Full'

# 创建项目目录
log_info "创建项目目录..."
sudo mkdir -p /var/www/memebot
sudo chown $USER:$USER /var/www/memebot

# 创建日志目录
log_info "创建日志目录..."
sudo mkdir -p /var/log/memebot
sudo chown $USER:$USER /var/log/memebot

log_success "系统环境安装完成！"
